import GameConst from "./GameConst";
import MapMenu from "./menus/MapMenu";
import Tutorial from "./tutorial";
import TransitionMenu from "./menus/TransitionMenu";
// import MainMenu from "./menus/MainMenu";
import WinMenu from "./menus/WinMenu";
import TargetMenu from "./menus/TargetMenu";
import LoseMenu from "./menus/LostMenu";
import PauseMenu from "./menus/PauseMenu";
export default class MenuManager {
    constructor() {
        this.menus = [];
        this.map = new MapMenu;
        // this.mainMenu = new MainMenu;
        this.transition = new TransitionMenu;
        this.winMenu = new WinMenu;
        this.loseMenu = new LoseMenu;
        this.target = new TargetMenu;
        this.pause = new PauseMenu;
        // this.result = new ResultMenu;
        this.tutorial = new Tutorial;
        // this.splashMenu = new SplashScreen;
        this.menus.push(this.map,  this.tutorial, this.mainMenu, this.transition, this.winMenu, this.loseMenu, this.target, this.pause, this.splashMenu);
        //this.result,
        this.current = this.map;
        MenuManager.instance = this;
        GameConst.menuManager = this;
    }

    reset(){
        //this.map.hide();
    }
}
MenuManager.prototype.isOnTutorial = function () {
    return this.current == this.tutorial;
};
MenuManager.prototype.traceActive = function () {
    var e = "";
    for (var t = 0; t < this.menus.length; ++t)
        e += " " + (this.menus[t].sprite.parent && this.menus[t].sprite.visible);
    console.log(e);
};
MenuManager.prototype.show = function (menu, t) {
    if (typeof t === "undefined") {
        t = true;
    }
    if(menu == this.target){
        menu.show();
        menu.update(0);
        return;
    }
    try {
        if (t)
            this.transition.play(menu);
        else {
            this.closeCurrent();
            this.current = menu;
            this.current.show();
            this.current.update(0);
        }
    } catch (n) {
        alert("Menu manger show error " + n);
        this.closeCurrent();
        this.current = menu;
        this.current.show();
        this.transition.stopMove();
        alert("Error in menu show: " + n);
    }
};
MenuManager.prototype.update = function (e) {
    if(this.current){
        this.current.update(e);
    }

    // else if (this.current && !(this.current == this.map && this.transition.isActive && this.transition.menuToShow == null && !this.transition.hasDoneAction))
    //     this.current.update(e);
    if (this.transition.isActive)
        this.transition.update(e);
};
MenuManager.prototype.closeCurrent = function () {
    if (this.current) {
        this.current.hide();
    }   
    this.current = null;
};
MenuManager.prototype.onResize = function () {
    if (this.current)
        this.current.onResize();
};










// ();
// var PauseMenu = function (e) {
//     function t() {
//         var t = this;
//         e.call(this);
//         var n = this.sprite;
//         var r;
//         var i = new createjs.BitmapText("pause",GameConst.game.atlases[1]);
//         i.letterSpacing = -10;
//         i.x =GameConst.SCREEN_W / 2 - i.getBounds().width / 2;
//         i.y = -40;
//         this.baseSprite.addChild(i);
//         var s = new ButtonObject(6, function (e) {
//                 t.loadMainMenu(e);
//             }, this.baseSprite, 350 + 35, 115 - 10);
//         this.animatedButtons.push(s);
//         this.clickables.push(s);
//         var s = new ButtonObject(5, function (e) {
//                 t.restartLevel(e);
//             }, this.baseSprite, 210 + 35, 115 - 10);
//         this.animatedButtons.push(s);
//         this.clickables.push(s);
//         var s = new SoundButton(true, this.baseSprite, 570, 115 - 50);
//         this.animatedButtons.push(s);
//         this.clickables.push(s);
//         var s = new SoundButton(false, this.baseSprite, 570, 215 - 50);
//         this.animatedButtons.push(s);
//         this.clickables.push(s);
//         this.targetPos = 290;
//         this.button = new AnimatedNode(App.game.animationManager.getAnimation("button"), 1 / 30, null);
//         this.baseSprite.addChild(this.button);
//         this.button.addAction(97, 0, 0);
//         this.button.addAction(106, 0, -1);
//         this.button.x =GameConst.SCREEN_W / 2 - 85;
//         this.button.y = 210 - 40;
//         this.button.scaleX = this.button.scaleY = .75;
//         this.button.addAction(this.button.totalFrames - 1, 1, 0);
//         var o = new ClickableObject(this.button);
//         o.setCircle(120 * this.button.scaleX, 120 * this.button.scaleX, 120 * this.button.scaleX);
//         o.callback = function () {
//             t.onPlayDown();
//         };
//         this.clickables.push(o);
//     }
//     Utils.__extends(t, e);
//     t.prototype.show = function () {
//         e.prototype.show.call(this);
//         this.button.gotoAndPlay(0);
//     };
//     t.prototype.onPlayDown = function () {
//         try {
//             this.button.gotoAndPlay(99);
//             Match3Level.instance.unpause();
//             SoundsManager.instance.playSound("pause");
//         } catch (e) {
//             alert("play downXX " + e);
//         }
//     };
//     t.prototype.update = function (t) {
//         e.prototype.update.call(this, t);
//         this.button.update(t);
//     };
//     return t;
// }
// (PauseLikeMenu);
// 
// var ResultMenu = function (e) {
//     function t() {
//         var t = this;
//         e.call(this);
//         this.dataTexts = [];
//         s = new createjs.BitmapText("game complete!",GameConst.game.atlases[1]);
//         s.letterSpacing = -10;
//         s.spaceWidth = 25;
//         s.pivotX = s.getBounds().width / 2;
//         s.x =GameConst.SCREEN_W / 2;
//         s.y = -45;
//         this.baseSprite.addChild(s);
//         this.backSprite.scaleY = 1.5;
//         var n = ["stars earned:", "total moves:", "total score:", "bonuses used:"];
//         for (var r = 0; r < n.length; ++r) {
//             for (var i = 0; i < 2; i++) {
//                 if (i == 1)
//                     continue;
//                 var s = new createjs.BitmapText(i == 0 ? n[r] :Utils.getInt(1e6).toString(), i == 0 ?GameConst.game.atlases[1] :GameConst.game.atlases[0]);
//                 s.letterSpacing = -10;
//                 s.spaceWidth = 25;
//                 s.pivotX = i == 0 ? 0 : s.getBounds().width / 2;
//                 s.x = i == 0 ? 30 : 520;
//                 s.y = 60 + r * 55 + (i == 0 ? 0 : -20);
//                 s.scaleX = s.scaleY = i == 0 ? .7 : 1;
//                 this.baseSprite.addChild(s)
//             }
//         }
//         this.button = new AnimatedNode(App.game.animationManager.getAnimation("button"), 1 / 30, null);
//         this.baseSprite.addChild(this.button);
//         this.button.addAction(97, 0, 0);
//         this.button.addAction(106, 0, -1);
//         this.button.x =GameConst.SCREEN_W / 2 - 85;
//         this.button.y = 310 - 25;
//         this.button.scaleX = this.button.scaleY = .75;
//         this.button.addAction(this.button.totalFrames - 1, 1, 0);
//         var o = new ClickableObject(this.button);
//         o.setCircle(120, 120, 120);
//         o.callback = function () {
//             t.onPlayDown()
//         };
//         this.clickables.push(o);
//         this.targetPos -= 60
//     }
//     Utils.__extends(t, e);
//     t.prototype.show = function () {
//         e.prototype.show.call(this);
//         this.button.gotoAndPlay(0);
//         for (var t = 0; t < this.dataTexts.length; ++t)
//            Utils.removeClip(this.dataTexts[t]);
//         this.dataTexts = [];
//         var n = [LevelManager.instance.totalStars + "/" + 180, LevelManager.instance.moves.toString(), LevelManager.instance.totalScores.toString(), LevelManager.instance.bonuses.toString()];
//         for (var t = 0; t < n.length; ++t) {
//             for (var r = 0; r < 2; r++) {
//                 if (r == 0)
//                     continue;
//                 var i = new createjs.BitmapText(n[t], r == 0 ?GameConst.game.atlases[1] :GameConst.game.atlases[0]);
//                 i.letterSpacing = -10;
//                 i.spaceWidth = 25;
//                 i.pivotX = r == 0 ? 0 : i.getBounds().width / 2;
//                 i.x = r == 0 ? 30 : 520;
//                 i.y = 60 + t * 55 + (r == 0 ? 0 : -20);
//                 i.scaleX = i.scaleY = r == 0 ? .7 : 1;
//                 this.dataTexts.push(i);
//                 this.baseSprite.addChild(i)
//             }
//         }
//         SoundsManager.instance.pauseMusic();
//         SoundsManager.instance.playSound("win")
//     };
//     t.prototype.hide = function () {
//         e.prototype.hide.call(this);
//         SoundsManager.instance.resumeMusic()
//     };
//     t.prototype.onPlayDown = function () {
//         try {
//             this.button.gotoAndPlay(99);
//             this.loadMainMenu()
//         } catch (e) {
//             alert("play downXXt " + e)
//         }
//     };
//     t.prototype.update = function (t) {
//         e.prototype.update.call(this, t);
//         this.button.update(t)
//     };
//     return t
// }
// (PauseLikeMenu);